The Kernel Types

The schema knl defines the following scalar types and classes:

extern void (0);

extern sos_Int (4);
extern sos_Char (1);
extern sos_Cstring (4);
extern sos_Pointer (4);

enum   sos_Bool {FALSE, TRUE};
enum   sos_Eq_kind {EQ_STRONG, EQ_WEAK};
enum   sos_Comp_result {CMP_LESS, CMP_EQUAL, CMP_GREATER};

extern sos_Container (4);
extern sos_Offset (4);
extern sos_Id (8);

class  sos_Object;
class  sos_Ordered_object;
class  sos_Scalar_object;
class  sos_Type;
class  sos_Named;
class  sos_String;

The relationships between some of the kernel types are illustrated in Figure [*].

Figure: Inheritance relationships among predefined kernel classes.
\begin{figure}\begin{center}
\
\vspace*{7.5mm}
\psfig{figure=figures/knl.epsi,height=8cm,width=13cm}
\vspace*{7.5mm}
\end{center}
\end{figure}

The external types void, sos_Int, sos_Char, sos_Cstring, and sos_Pointer as well as the enumeration types sos_Bool, sos_Eq_kind, and sos_Comp_result are described in Section [*].

The class sos_Object is the (indirect) superclass of all classes, whereas the class sos_Scalar_object can be considered as the implicit supertype of all scalar types (see Section [*]). The classes sos_Object, sos_Scalar_object, sos_Ordered_object, sos_Type, sos_Named, and sos_String are described in detail in Appendix [*].

The type sos_Container plays a special role that will be described in Section [*]. The type sos_Offset denotes the position of an object within a container; it is only used for internal purposes. This holds also true for the type sos_Id.



Subsections